{
  "cells": [
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "0JRyAsEGK8QL"
      },
      "outputs": [],
      "source": [
        "%%capture --no-stderr\n",
        "%pip install -U langgraph langchain_community langchain_openai langchain_experimental langchain-chroma pypdf sentence-transformers"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "hZ7uiJ-nvuIh"
      },
      "outputs": [],
      "source": [
        "import os\n",
        "\n",
        "os.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\n",
        "os.environ[\"LANGCHAIN_API_KEY\"] = \"\" #put your langchain api key here\n",
        "os.environ[\"LANGCHAIN_PROJECT\"] = \"langgraph_multi_agent_blog\""
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "2HH6Xn34JBNk"
      },
      "source": [
        "### Setup API Keys"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "rkDa7e0DHjUu"
      },
      "outputs": [],
      "source": [
        "import getpass\n",
        "\n",
        "def _set_env(var: str):\n",
        "    if not os.environ.get(var):\n",
        "        os.environ[var] = getpass.getpass(f\"{var}: \")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "PIZML-lxJDh1",
        "outputId": "da4c75a9-dce8-4061-fecd-3eb1536e9f56"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "TAVILY_API_KEY: ··········\n"
          ]
        }
      ],
      "source": [
        "_set_env(\"TAVILY_API_KEY\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "VvyoWnATJce3",
        "outputId": "e76a5b7b-e27a-45e8-9f43-ca30a969e960"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "OPENAI_API_KEY: ··········\n"
          ]
        }
      ],
      "source": [
        "_set_env(\"OPENAI_API_KEY\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "x45eNyLNJ1eV"
      },
      "source": [
        "### Creating LLM"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "PRkZrVIXJfD-"
      },
      "outputs": [],
      "source": [
        "from langchain_openai import ChatOpenAI\n",
        "\n",
        "llm = ChatOpenAI(model_name=\"gpt-4o\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "09V-Tbp-J5k9"
      },
      "source": [
        "### Websearch Tool"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "1NCjd6LkJ3G-"
      },
      "outputs": [],
      "source": [
        "from langchain_community.tools.tavily_search import TavilySearchResults\n",
        "\n",
        "web_search_tool = TavilySearchResults(max_results=2)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8N6VcMROK3D0"
      },
      "source": [
        "### RAG tool"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "J8sx3BOiJ7vu",
        "outputId": "bdb91dfc-0f42-47d9-8e3c-148471ab6c73"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Loaded 2 documents from the folder.\n"
          ]
        }
      ],
      "source": [
        "from langchain_community.document_loaders import PyPDFLoader, Docx2txtLoader\n",
        "from langchain_text_splitters import RecursiveCharacterTextSplitter\n",
        "from typing import List\n",
        "from langchain_core.documents import Document\n",
        "import os\n",
        "\n",
        "def load_documents(folder_path: str) -> List[Document]:\n",
        "    documents = []\n",
        "    for filename in os.listdir(folder_path):\n",
        "        file_path = os.path.join(folder_path, filename)\n",
        "        if filename.endswith('.pdf'):\n",
        "            loader = PyPDFLoader(file_path)\n",
        "        elif filename.endswith('.docx'):\n",
        "            loader = Docx2txtLoader(file_path)\n",
        "        else:\n",
        "            print(f\"Unsupported file type: {filename}\")\n",
        "            continue\n",
        "        documents.extend(loader.load())\n",
        "    return documents\n",
        "\n",
        "folder_path = \"/content/docs\"\n",
        "documents = load_documents(folder_path)\n",
        "print(f\"Loaded {len(documents)} documents from the folder.\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "bX4Pvf-fLGvk",
        "outputId": "c80d16a1-eaf7-4e99-bd89-cda9f79c1f1f"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Split the documents into 4 chunks.\n"
          ]
        }
      ],
      "source": [
        "text_splitter = RecursiveCharacterTextSplitter(\n",
        "    chunk_size=1000,\n",
        "    chunk_overlap=200,\n",
        "    length_function=len\n",
        ")\n",
        "\n",
        "splits = text_splitter.split_documents(documents)\n",
        "print(f\"Split the documents into {len(splits)} chunks.\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 441,
          "referenced_widgets": [
            "a1faa9b4be024d67b465052b871c4b84",
            "154ab02a034b4706b50cb22b84f0a50f",
            "5efc7a177a8448d2976231b79a4db8f6",
            "afe8d271571644e18a79d4376479eef1",
            "b7097ac678654d67b1bc2b055ead661b",
            "8da9ae97ce3247039216c2eba7e5f0aa",
            "50caeae0353840858bbe0080de2f5e68",
            "3c9e743f83ea4724b582948e79708e64",
            "41c0927b4c6842328e00a809e57c2c26",
            "a673e70c7f7941bca0dc0527e2e478b9",
            "1f63ce1eb8e04e188e5e9e9a5c23a77c",
            "c78f9b0ccd9c4b02b60b4c31fdaf7b4f",
            "46c3a8f4a3b3432c8122051473fae82a",
            "3a16705ce7be4cafbff414b16c4c0136",
            "f479706f26df4472b9feacb49ff4cc68",
            "bda459bdf3a440ceb19952e6e8f2aae8",
            "5fd6713203394d09a1c36aa60f1ad39b",
            "d8f3ed5c27eb41ba9e547fe6299b957f",
            "ace141ee89a04424b849d913a0877e19",
            "7aa831ff911342878c76f48ce36346bd",
            "f86633548fbe4e1a8aa81cda8b0cb7d5",
            "856102d288ba48f8a417b7501bdaf6ac",
            "02f980ef61a4408795695d83d2deac09",
            "725b4477fb9948d5b06f7c48d4aedf3c",
            "a7b2eef74ca14598a3266a92e23899a2",
            "80f5f668c2c440c4a430910d86b1f651",
            "62cb067923be46d78718afcb661337d4",
            "f554ff9eec96473385a0089b1932559c",
            "5d3920080d9145fd9686148c377c943f",
            "fa1117c8f73a451c8fd521ae4608b4e7",
            "e6f9f28d3bc8457682a4d69b1bbd5972",
            "37b94b54f4d349cdbeb71cc47f80614e",
            "9a2ec5debb20450f9bd573dd29e14930",
            "ea312bd61b9444aa9ba22ac2ba40dbd7",
            "1f357a6fbd0a403d9a33c9a19dd6a7cb",
            "19c11f499f404a33bfc881c738e9a287",
            "9f62e16334ba40689356e8daa5dd852c",
            "c83f93a74acf40dca2fdaa6e5bee0654",
            "6bc4cc186ac44b50bd99ffe9fbf5a1e7",
            "374ea758a45641588eb6b7af2e478ed4",
            "4ff850f4c42f40338adcffa980bbcf26",
            "b0d91efcebbd4a0788da148a1a3003bf",
            "e1d40c569e0048b79644763d32098348",
            "6b91ea1978d8452cb32f47f3d8d49588",
            "d638c91b9a3f46c1b7f6e0a277ce269b",
            "e02f2f3b089648168a31aceb1750d7e5",
            "54ee88e8afd34db98715dedb0cfa41e3",
            "9933fbe31dce452aa125eadb0e95feb4",
            "85fbf3b2ec8644e7a1a84eb546e55ad5",
            "8fa1dbbe67fd448eb25d09ee2cb0e3a1",
            "09cf10392efa488286ad0fd3d8d3d823",
            "d33843c3766043c88c0bd8da57ad9840",
            "e7349d885f354d6ab1bd76e8329f3191",
            "dd5b799ea03746f6af53dff388313411",
            "576e2e11a405476f86f785cc5b150b73",
            "6434258a2d0c4763a2ffeaa6a9d1be38",
            "ac0f5f9c8985412aaac268c127fb9e07",
            "fcce9846babc4a1b91fb00bfff31fcfa",
            "e1385daf2da9437ba70df001e4b5abe7",
            "becf2b4779f146839af4419b80346f5e",
            "4735e8c982d24713bde1dd6467d0465e",
            "20a8fe88e5a047e18145c6f0603e8a2f",
            "d0b5e7a6270e415b9460786fcd037c39",
            "9e0ce48bdf53473bb87e2c35c6492872",
            "c1a523087ccc48b0b4641b77a4f5d2f4",
            "43d674fbefc945e3aef5c02e3130daf4",
            "8e33a0b16bf54162ad3389c4fd712025",
            "0dc5d74bbeb7416aafb83493d398b284",
            "3b0f8e4e3b1241699006b0f0006d2f73",
            "bf18fef89ce94a7cb5f7e6c2531f6b7b",
            "b6ab73dea4d14190a0e1a0df724eb272",
            "4a085f8aa8f3411c84367f7b0d36b393",
            "14e1c3fcca114894abd4405cb2b185cd",
            "0bdabcd7c558419d9f09d0d2948255ee",
            "d4a2f0347910423c80f93fe1fd62dc9e",
            "85dbde76519747318ba5a9d3cb64b198",
            "8c17fb3e1ac0482f8f429dbc67a0dfb7",
            "15f23ca67b584e1e83f2f0e8ce7e26a1",
            "f1dbba66af3e467093cd92bea060872d",
            "be78ec3ab9ed4fbf87ff3a4c00b049e4",
            "64223314e16347b1a253e4ce8db84634",
            "0986cba6f29746ffbc37bd6e10c13849",
            "0db4f33ddd8c45f3a16be06954e91a4a",
            "6dee812400714f7986c36dcc6266455e",
            "7e7e403387f847039c7d95464e02073a",
            "e29394be61ef44fd95f087f5aa4e8d7e",
            "9a2feed0ad1b47199fba1247b720f1fb",
            "3b272f3544c44f6fa99b1c1fe5073b16",
            "b27bb4ac6dc145c8b93b7ff939014030",
            "1312e162a22a4b5b8deed6971d2ae5a2",
            "49753983c8f74fcf8c72fab5865b56c5",
            "ba8100d415764cf3b05c5e285f230acb",
            "96cb91f6d69a4551b3bbd0e2693fdda7",
            "8043223d140543f0a91dbc91aca18681",
            "435fd1ca3d884a88b86bd887903e7d4c",
            "09dbeb3415844078acec44d4535042d5",
            "337a8cc040fa4e15aa159cac09769a01",
            "0e5d97707618421eb98fcea463dc01c2",
            "bd19af49cf16423286394ddbade1a0e8",
            "9474bc45a8d3491b86f1c9349701000e",
            "bb53ecb8b7e54f32805c8e639e9b70fd",
            "5b87f244a5834c10a336bde29533cb20",
            "7c2874ab7535499fbdd3f756d16ac927",
            "192e8df414de4331a4b6d1dff8adeaa1",
            "4aa77651f63d421191259c76ff8f5657",
            "45b17cf1276f4ccb921ff47585c7aeca",
            "66ce8ac0ff814c829f273f8c6662f467",
            "dfbe2529ed49416b96f624e14a721c05",
            "36ec83b1dd524861908d9e01e73b2f6f",
            "cbb9c058e6d540c7a893e0c740fd134d",
            "a11e048102904d97988f5ed135150b65",
            "64ce7b25e85f452eb780048875d12488",
            "b75f3cc4d6e44b69a3f74159a7fa1c67",
            "58a3e33421344ad5884ad05db220cc85",
            "a8d467eef48a4f2193c4562955082dc6",
            "8786148c167743e98372b4f0a476f221",
            "9a9271af3e5d4e7083708ccd48bfec5a",
            "f8ba25a87b0445f2b905dac498b2c3bb",
            "9bbf5ee36dd64177bcd8e54916b7a824",
            "4f11da84269345459635755d51345cb1",
            "c6c5671559fb47668ac4b8f6e6ed9e72"
          ]
        },
        "id": "Rmb2ZpxqLKpQ",
        "outputId": "dcc37c51-8baa-4656-a115-68b8e31ffda1"
      },
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "<ipython-input-9-3b6e8575ed3e>:3: LangChainDeprecationWarning: The class `HuggingFaceEmbeddings` was deprecated in LangChain 0.2.2 and will be removed in 1.0. An updated version of the class exists in the :class:`~langchain-huggingface package and should be used instead. To use it run `pip install -U :class:`~langchain-huggingface` and import as `from :class:`~langchain_huggingface import HuggingFaceEmbeddings``.\n",
            "  embedding_function = SentenceTransformerEmbeddings(model_name=\"all-MiniLM-L6-v2\")\n"
          ]
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "a1faa9b4be024d67b465052b871c4b84",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "modules.json:   0%|          | 0.00/349 [00:00<?, ?B/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "c78f9b0ccd9c4b02b60b4c31fdaf7b4f",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "config_sentence_transformers.json:   0%|          | 0.00/116 [00:00<?, ?B/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "02f980ef61a4408795695d83d2deac09",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "README.md:   0%|          | 0.00/10.7k [00:00<?, ?B/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "ea312bd61b9444aa9ba22ac2ba40dbd7",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "sentence_bert_config.json:   0%|          | 0.00/53.0 [00:00<?, ?B/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "d638c91b9a3f46c1b7f6e0a277ce269b",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "config.json:   0%|          | 0.00/612 [00:00<?, ?B/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "6434258a2d0c4763a2ffeaa6a9d1be38",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "model.safetensors:   0%|          | 0.00/90.9M [00:00<?, ?B/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "8e33a0b16bf54162ad3389c4fd712025",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "tokenizer_config.json:   0%|          | 0.00/350 [00:00<?, ?B/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "15f23ca67b584e1e83f2f0e8ce7e26a1",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "vocab.txt:   0%|          | 0.00/232k [00:00<?, ?B/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "b27bb4ac6dc145c8b93b7ff939014030",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "tokenizer.json:   0%|          | 0.00/466k [00:00<?, ?B/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "9474bc45a8d3491b86f1c9349701000e",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "special_tokens_map.json:   0%|          | 0.00/112 [00:00<?, ?B/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "a11e048102904d97988f5ed135150b65",
              "version_major": 2,
              "version_minor": 0
            },
            "text/plain": [
              "1_Pooling/config.json:   0%|          | 0.00/190 [00:00<?, ?B/s]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Vector store created and persisted to './chroma_db'\n"
          ]
        }
      ],
      "source": [
        "from langchain_community.embeddings.sentence_transformer import SentenceTransformerEmbeddings\n",
        "\n",
        "embedding_function = SentenceTransformerEmbeddings(model_name=\"all-MiniLM-L6-v2\")\n",
        "\n",
        "from langchain_chroma import Chroma\n",
        "\n",
        "collection_name = \"my_collection\"\n",
        "vectorstore = Chroma.from_documents(\n",
        "    collection_name=collection_name,\n",
        "    documents=splits,\n",
        "    embedding=embedding_function,\n",
        "    persist_directory=\"./chroma_db\"\n",
        ")\n",
        "print(\"Vector store created and persisted to './chroma_db'\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "DNnvE0qpLO7L",
        "outputId": "5d00e145-dc4e-4491-89c2-b478acfcb870"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "[Document(metadata={'page': 1, 'source': '/content/docs/FutureSmart AI .pdf'}, page_content='FutureSmart AI provides customized speech to text services, employing cutting-\\nedge speech recognition technologies to cater to specific client needs. Ideal for \\ncreating efficient documentation and enabling voice-driven commands, this \\nsolution boosts productivity and accessibility.'), Document(metadata={'page': 0, 'source': '/content/docs/FutureSmart AI .pdf'}, page_content='FutureSmart AI provides custom Natural Language Processing (NLP) \\nsolutions for companies looking to get ahead of the future. Our \\ndedicated team of Data Scientists and ML Engineers provides an end-\\nto-end solution from data labeling to modeling and deploying an ML \\nmodel tailored to your specific use case. \\nFounder: Pradip Nichite \\n \\nServices: \\nText Classification \\nAt FutureSmart AI, we develop custom text classification solutions using \\nadvanced NLP techniques tailored to your specific business requirements. \\nLeveraging Python, Pytorch, and Hugging Face transformers, we enable precise \\ndata categorization across applications such as intent detection, document \\ncategorization, and sentiment analysis, enhancing your decision-making \\nprocesses and operational efficiency. \\n \\nChatbots \\nWe specialize in creating custom chatbots that integrate seamlessly with your \\nbusiness environment. Using semantic search and large language models, our')]\n"
          ]
        }
      ],
      "source": [
        "retriever = vectorstore.as_retriever(search_kwargs={\"k\": 2})\n",
        "retriever_results = retriever.invoke(\"Who was the founder of Futuresmart AI?\")\n",
        "print(retriever_results)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "gsJqX4l0Ljsw"
      },
      "outputs": [],
      "source": [
        "from langchain.tools import tool\n",
        "from pydantic import BaseModel\n",
        "\n",
        "class RagToolSchema(BaseModel):\n",
        "    question: str\n",
        "\n",
        "@tool(args_schema=RagToolSchema)\n",
        "def retriever_tool(question):\n",
        "  \"\"\"Tool to Retrieve Semantically Similar documents to answer User Questions related to FutureSmart AI\"\"\"\n",
        "  print(\"INSIDE RETRIEVER NODE\")\n",
        "  retriever = vectorstore.as_retriever(search_kwargs={\"k\": 2})\n",
        "  retriever_result = retriever.invoke(question)\n",
        "  return \"\\n\\n\".join(doc.page_content for doc in retriever_results)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "O7VDVRMrL7KC"
      },
      "source": [
        "### NL2SQL Tool"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "collapsed": true,
        "id": "oNJRJJQIL3NT",
        "outputId": "85cfa3b1-e916-4ada-9a57-f43e9c075ea6"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "--2024-12-25 06:35:23--  https://github.com/lerocha/chinook-database/raw/master/ChinookDatabase/DataSources/Chinook_Sqlite.sqlite\n",
            "Resolving github.com (github.com)... 140.82.113.4\n",
            "Connecting to github.com (github.com)|140.82.113.4|:443... connected.\n",
            "HTTP request sent, awaiting response... 302 Found\n",
            "Location: https://raw.githubusercontent.com/lerocha/chinook-database/master/ChinookDatabase/DataSources/Chinook_Sqlite.sqlite [following]\n",
            "--2024-12-25 06:35:23--  https://raw.githubusercontent.com/lerocha/chinook-database/master/ChinookDatabase/DataSources/Chinook_Sqlite.sqlite\n",
            "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.108.133, 185.199.110.133, ...\n",
            "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.\n",
            "HTTP request sent, awaiting response... 200 OK\n",
            "Length: 1067008 (1.0M) [application/octet-stream]\n",
            "Saving to: ‘Chinook_Sqlite.sqlite’\n",
            "\n",
            "Chinook_Sqlite.sqli 100%[===================>]   1.02M  --.-KB/s    in 0.07s   \n",
            "\n",
            "2024-12-25 06:35:23 (13.6 MB/s) - ‘Chinook_Sqlite.sqlite’ saved [1067008/1067008]\n",
            "\n"
          ]
        }
      ],
      "source": [
        "!wget https://github.com/lerocha/chinook-database/raw/master/ChinookDatabase/DataSources/Chinook_Sqlite.sqlite"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "n12bHN79MAfv"
      },
      "outputs": [],
      "source": [
        "!mv Chinook_Sqlite.sqlite Chinook.db"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "XDthh6qSMDLp"
      },
      "outputs": [],
      "source": [
        "from langchain_community.utilities import SQLDatabase\n",
        "\n",
        "db = SQLDatabase.from_uri(\"sqlite:///Chinook.db\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "YAIknFQjMEzV"
      },
      "outputs": [],
      "source": [
        "import re\n",
        "\n",
        "def clean_sql_query(text: str) -> str:\n",
        "    \"\"\"\n",
        "    Clean SQL query by removing code block syntax, various SQL tags, backticks,\n",
        "    prefixes, and unnecessary whitespace while preserving the core SQL query.\n",
        "\n",
        "    Args:\n",
        "        text (str): Raw SQL query text that may contain code blocks, tags, and backticks\n",
        "\n",
        "    Returns:\n",
        "        str: Cleaned SQL query\n",
        "    \"\"\"\n",
        "    # Step 1: Remove code block syntax and any SQL-related tags\n",
        "    # This handles variations like ```sql, ```SQL, ```SQLQuery, etc.\n",
        "    block_pattern = r\"```(?:sql|SQL|SQLQuery|mysql|postgresql)?\\s*(.*?)\\s*```\"\n",
        "    text = re.sub(block_pattern, r\"\\1\", text, flags=re.DOTALL)\n",
        "\n",
        "    # Step 2: Handle \"SQLQuery:\" prefix and similar variations\n",
        "    # This will match patterns like \"SQLQuery:\", \"SQL Query:\", \"MySQL:\", etc.\n",
        "    prefix_pattern = r\"^(?:SQL\\s*Query|SQLQuery|MySQL|PostgreSQL|SQL)\\s*:\\s*\"\n",
        "    text = re.sub(prefix_pattern, \"\", text, flags=re.IGNORECASE)\n",
        "\n",
        "    # Step 3: Extract the first SQL statement if there's random text after it\n",
        "    # Look for a complete SQL statement ending with semicolon\n",
        "    sql_statement_pattern = r\"(SELECT.*?;)\"\n",
        "    sql_match = re.search(sql_statement_pattern, text, flags=re.IGNORECASE | re.DOTALL)\n",
        "    if sql_match:\n",
        "        text = sql_match.group(1)\n",
        "\n",
        "    # Step 4: Remove backticks around identifiers\n",
        "    text = re.sub(r'`([^`]*)`', r'\\1', text)\n",
        "\n",
        "    # Step 5: Normalize whitespace\n",
        "    # Replace multiple spaces with single space\n",
        "    text = re.sub(r'\\s+', ' ', text)\n",
        "\n",
        "    # Step 6: Preserve newlines for main SQL keywords to maintain readability\n",
        "    keywords = ['SELECT', 'FROM', 'WHERE', 'GROUP BY', 'HAVING', 'ORDER BY',\n",
        "               'LIMIT', 'JOIN', 'LEFT JOIN', 'RIGHT JOIN', 'INNER JOIN',\n",
        "               'OUTER JOIN', 'UNION', 'VALUES', 'INSERT', 'UPDATE', 'DELETE']\n",
        "\n",
        "    # Case-insensitive replacement for keywords\n",
        "    pattern = '|'.join(r'\\b{}\\b'.format(k) for k in keywords)\n",
        "    text = re.sub(f'({pattern})', r'\\n\\1', text, flags=re.IGNORECASE)\n",
        "\n",
        "    # Step 7: Final cleanup\n",
        "    # Remove leading/trailing whitespace and extra newlines\n",
        "    text = text.strip()\n",
        "    text = re.sub(r'\\n\\s*\\n', '\\n', text)\n",
        "\n",
        "    return text"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "_1BjrL8OMH1h",
        "outputId": "66988648-acb5-4000-f4c1-81a1143bcf4d"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "INSIDE NL2SQL TOOL\n"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "<ipython-input-16-a953639c3dfa>:16: LangChainDeprecationWarning: The class `QuerySQLDataBaseTool` was deprecated in LangChain 0.3.12 and will be removed in 1.0. An updated version of the class exists in the :class:`~langchain-community package and should be used instead. To use it run `pip install -U :class:`~langchain-community` and import as `from :class:`~langchain_community.tools import QuerySQLDatabaseTool``.\n",
            "  execute_query = QuerySQLDataBaseTool(db=db)\n"
          ]
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Question: How many employees are there?\n",
            "Answer: [(8,)]\n"
          ]
        }
      ],
      "source": [
        "from langchain.chains import create_sql_query_chain\n",
        "from langchain_community.tools.sql_database.tool import QuerySQLDataBaseTool\n",
        "from operator import itemgetter\n",
        "import re\n",
        "from langchain_core.output_parsers import StrOutputParser\n",
        "from langchain_core.prompts import PromptTemplate\n",
        "from langchain_core.runnables import RunnablePassthrough, RunnableLambda\n",
        "\n",
        "class SQLToolSchema(BaseModel):\n",
        "    question: str\n",
        "\n",
        "@tool(args_schema=SQLToolSchema)\n",
        "def nl2sql_tool(question):\n",
        "  \"\"\"Tool to Generate and Execute SQL Query to answer User Questions related to chinook DB\"\"\"\n",
        "  print(\"INSIDE NL2SQL TOOL\")\n",
        "  execute_query = QuerySQLDataBaseTool(db=db)\n",
        "  write_query = create_sql_query_chain(llm, db)\n",
        "\n",
        "  chain = (\n",
        "      RunnablePassthrough.assign(query=write_query | RunnableLambda(clean_sql_query)).assign(\n",
        "          result=itemgetter(\"query\") | execute_query\n",
        "      )\n",
        "  )\n",
        "\n",
        "  response = chain.invoke({\"question\": question})\n",
        "  return response['result']\n",
        "\n",
        "question = \"How many employees are there?\"\n",
        "result = nl2sql_tool.invoke({\"question\": question})\n",
        "print(f\"Question: {question}\")\n",
        "print(f\"Answer: {result}\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "V1HgRgOdiBTv"
      },
      "source": [
        "### Create Supervisor Agent"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "0Ht9xXFoh7xY"
      },
      "outputs": [],
      "source": [
        "from typing import Literal\n",
        "from typing_extensions import TypedDict\n",
        "from langgraph.graph import MessagesState, START, END\n",
        "from langgraph.types import Command\n",
        "\n",
        "\n",
        "members = [\"web_researcher\", \"rag\", \"nl2sql\"]\n",
        "# Our supervisor is an LLM node. It just picks the next agent to process\n",
        "# and decides when the work is completed\n",
        "options = members + [\"FINISH\"]\n",
        "\n",
        "system_prompt = (\n",
        "    \"You are a supervisor tasked with managing a conversation between the\"\n",
        "    f\" following workers: {members}. Given the following user request,\"\n",
        "    \" respond with the worker to act next. Each worker will perform a\"\n",
        "    \" task and respond with their results and status. When finished,\"\n",
        "    \" respond with FINISH.\"\n",
        ")\n",
        "\n",
        "\n",
        "class Router(TypedDict):\n",
        "    \"\"\"Worker to route to next. If no workers needed, route to FINISH.\"\"\"\n",
        "\n",
        "    next: Literal[\"web_researcher\", \"rag\", \"nl2sql\",\"FINISH\"]\n",
        "\n",
        "\n",
        "def supervisor_node(state: MessagesState) -> Command[Literal[\"web_researcher\", \"rag\", \"nl2sql\", \"__end__\"]]:\n",
        "    messages = [\n",
        "        {\"role\": \"system\", \"content\": system_prompt},\n",
        "    ] + state[\"messages\"]\n",
        "    response = llm.with_structured_output(Router).invoke(messages)\n",
        "    goto = response[\"next\"]\n",
        "    print(f\"Next Worker: {goto}\")\n",
        "    if goto == \"FINISH\":\n",
        "        goto = END\n",
        "\n",
        "    return Command(goto=goto)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "-StbOfl7kUoc"
      },
      "source": [
        "### Create Web Research, RAG and NL2SQL Agent"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "VJBcOLmUh7pr"
      },
      "outputs": [],
      "source": [
        "from langchain_core.messages import HumanMessage, AIMessage\n",
        "from langgraph.graph import StateGraph, START, END\n",
        "from langgraph.prebuilt import create_react_agent"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "7KLzE_9VoK7S"
      },
      "outputs": [],
      "source": [
        "from typing import Callable, Literal, Optional, Sequence, Type, TypeVar, Union, cast\n",
        "from langchain_core.language_models import BaseChatModel, LanguageModelLike\n",
        "from langchain_core.messages import AIMessage, BaseMessage, SystemMessage, ToolMessage\n",
        "from langchain_core.runnables import (\n",
        "    Runnable,\n",
        "    RunnableBinding,\n",
        "    RunnableConfig,\n",
        ")\n",
        "from langchain_core.tools import BaseTool\n",
        "from typing_extensions import Annotated, TypedDict\n",
        "from langgraph._api.deprecation import deprecated_parameter\n",
        "from langgraph.errors import ErrorCode, create_error_message\n",
        "from langgraph.graph import StateGraph\n",
        "from langgraph.graph.graph import CompiledGraph\n",
        "from langgraph.graph.message import add_messages\n",
        "from langgraph.managed import IsLastStep, RemainingSteps\n",
        "from langgraph.prebuilt.tool_executor import ToolExecutor\n",
        "from langgraph.prebuilt.tool_node import ToolNode, tools_condition\n",
        "from langgraph.store.base import BaseStore\n",
        "from langgraph.types import Checkpointer\n",
        "from langgraph.utils.runnable import RunnableCallable\n",
        "\n",
        "class AgentState(TypedDict):\n",
        "    \"\"\"The state of the agent.\"\"\"\n",
        "\n",
        "    messages: Annotated[Sequence[BaseMessage], add_messages]\n",
        "\n",
        "def create_agent(llm, tools):\n",
        "    llm_with_tools = llm.bind_tools(tools)\n",
        "    def chatbot(state: AgentState):\n",
        "      return {\"messages\": [llm_with_tools.invoke(state[\"messages\"])]}\n",
        "    graph_builder = StateGraph(AgentState)\n",
        "    graph_builder.add_node(\"agent\", chatbot)\n",
        "\n",
        "    tool_node = ToolNode(tools=tools)\n",
        "    graph_builder.add_node(\"tools\", tool_node)\n",
        "\n",
        "    graph_builder.add_conditional_edges(\n",
        "        \"agent\",\n",
        "        tools_condition,\n",
        "    )\n",
        "    # Any time a tool is called, we return to the chatbot to decide the next step\n",
        "    graph_builder.add_edge(\"tools\", \"agent\")\n",
        "    graph_builder.set_entry_point(\"agent\")\n",
        "    graph = graph_builder.compile()\n",
        "    return graph"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 266
        },
        "id": "FfoLrP-IqcDl",
        "outputId": "396bef2b-1b16-4c1e-ca2d-65bbeb964751"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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",
            "text/plain": [
              "<IPython.core.display.Image object>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "websearch_agent = create_agent(llm, [web_search_tool])\n",
        "\n",
        "from IPython.display import Image, display\n",
        "\n",
        "try:\n",
        "    display(Image(websearch_agent.get_graph().draw_mermaid_png()))\n",
        "except Exception:\n",
        "    # You can put your exception handling code here\n",
        "    pass"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "mZXk4Tqwh7fD"
      },
      "outputs": [],
      "source": [
        "def web_research_node(state: MessagesState) -> Command[Literal[\"supervisor\"]]:\n",
        "    result = websearch_agent.invoke(state)\n",
        "    return Command(\n",
        "        update={\n",
        "            \"messages\": [\n",
        "                HumanMessage(content=result[\"messages\"][-1].content, name=\"web_researcher\")\n",
        "            ]\n",
        "        },\n",
        "        goto=\"supervisor\",\n",
        "    )"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "q5FauM_7mgZ9"
      },
      "outputs": [],
      "source": [
        "result = websearch_agent.invoke({\"messages\": [(\"user\", \"what is the weather in delhi today?\")]})"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 53
        },
        "id": "kyoqJIvGsFTj",
        "outputId": "5c19f823-bc28-454d-8b0a-d8d47fe8eae0"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "string"
            },
            "text/plain": [
              "'Today in Delhi, the weather is expected to be cloudy. The maximum temperature is around 22.66°C and the minimum temperature is approximately 10.05°C, with humidity at 52%.'"
            ]
          },
          "execution_count": 27,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "result['messages'][-1].content"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "TRsspvr8sQeB"
      },
      "outputs": [],
      "source": [
        "rag_agent = create_agent(llm, [retriever_tool])\n",
        "\n",
        "def rag_node(state: MessagesState) -> Command[Literal[\"supervisor\"]]:\n",
        "    result = rag_agent.invoke(state)\n",
        "    return Command(\n",
        "        update={\n",
        "            \"messages\": [\n",
        "                HumanMessage(content=result[\"messages\"][-1].content, name=\"rag\")\n",
        "            ]\n",
        "        },\n",
        "        goto=\"supervisor\",\n",
        "    )"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "gcPuUCIYtNuV"
      },
      "outputs": [],
      "source": [
        "nl2sql_agent = create_agent(llm, [nl2sql_tool])\n",
        "\n",
        "def nl2sql_node(state: MessagesState) -> Command[Literal[\"supervisor\"]]:\n",
        "    result = nl2sql_agent.invoke(state)\n",
        "    return Command(\n",
        "        update={\n",
        "            \"messages\": [\n",
        "                HumanMessage(content=result[\"messages\"][-1].content, name=\"nl2sql\")\n",
        "            ]\n",
        "        },\n",
        "        goto=\"supervisor\",\n",
        "    )"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "PDIjMop2tb-5"
      },
      "outputs": [],
      "source": [
        "builder = StateGraph(MessagesState)\n",
        "builder.add_edge(START, \"supervisor\")\n",
        "builder.add_node(\"supervisor\", supervisor_node)\n",
        "builder.add_node(\"web_researcher\", web_research_node)\n",
        "builder.add_node(\"rag\", rag_node)\n",
        "builder.add_node(\"nl2sql\", nl2sql_node)\n",
        "graph = builder.compile()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 266
        },
        "id": "leA1zchVt777",
        "outputId": "6bbfc5eb-e8c2-430a-e3d9-9f51bd2c0f69"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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",
            "text/plain": [
              "<IPython.core.display.Image object>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "from IPython.display import Image, display\n",
        "\n",
        "try:\n",
        "    display(Image(graph.get_graph().draw_mermaid_png()))\n",
        "except Exception:\n",
        "    # You can put your exception handling code here\n",
        "    pass"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "oRTCxacuuBsM",
        "outputId": "e6f3c43c-2231-43cf-fd52-ba41a7b53f13"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Next Worker: web_researcher\n",
            "((), {'supervisor': None})\n",
            "----\n",
            "(('web_researcher:d9079f74-0db8-074f-e992-7b3e56008b0b',), {'agent': {'messages': [AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_KikzMfHJLNZuIKAU77Mb2BHx', 'function': {'arguments': '{\"query\":\"current weather in Kolkata\"}', 'name': 'tavily_search_results_json'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 22, 'prompt_tokens': 86, 'total_tokens': 108, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-2024-08-06', 'system_fingerprint': 'fp_f785eb5f47', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-a3cd9c07-b5f0-46b7-ace5-71e7c573bc73-0', tool_calls=[{'name': 'tavily_search_results_json', 'args': {'query': 'current weather in Kolkata'}, 'id': 'call_KikzMfHJLNZuIKAU77Mb2BHx', 'type': 'tool_call'}], usage_metadata={'input_tokens': 86, 'output_tokens': 22, 'total_tokens': 108, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})]}})\n",
            "----\n",
            "(('web_researcher:d9079f74-0db8-074f-e992-7b3e56008b0b',), {'tools': {'messages': [ToolMessage(content='[{\"url\": \"https://www.weatherapi.com/\", \"content\": \"{\\'location\\': {\\'name\\': \\'Kolkata\\', \\'region\\': \\'West Bengal\\', \\'country\\': \\'India\\', \\'lat\\': 22.5697, \\'lon\\': 88.3697, \\'tz_id\\': \\'Asia/Kolkata\\', \\'localtime_epoch\\': 1735114116, \\'localtime\\': \\'2024-12-25 13:38\\'}, \\'current\\': {\\'last_updated_epoch\\': 1735113600, \\'last_updated\\': \\'2024-12-25 13:30\\', \\'temp_c\\': 26.6, \\'temp_f\\': 79.9, \\'is_day\\': 1, \\'condition\\': {\\'text\\': \\'Sunny\\', \\'icon\\': \\'//cdn.weatherapi.com/weather/64x64/day/113.png\\', \\'code\\': 1000}, \\'wind_mph\\': 5.8, \\'wind_kph\\': 9.4, \\'wind_degree\\': 357, \\'wind_dir\\': \\'N\\', \\'pressure_mb\\': 1015.0, \\'pressure_in\\': 29.97, \\'precip_mm\\': 0.0, \\'precip_in\\': 0.0, \\'humidity\\': 26, \\'cloud\\': 16, \\'feelslike_c\\': 25.5, \\'feelslike_f\\': 77.8, \\'windchill_c\\': 26.6, \\'windchill_f\\': 79.9, \\'heatindex_c\\': 25.5, \\'heatindex_f\\': 77.8, \\'dewpoint_c\\': 5.6, \\'dewpoint_f\\': 42.0, \\'vis_km\\': 10.0, \\'vis_miles\\': 6.0, \\'uv\\': 1.7, \\'gust_mph\\': 7.3, \\'gust_kph\\': 11.7}}\"}, {\"url\": \"https://www.hindustantimes.com/cities/kolkata-news/kolkata-weather-today-aqi-and-rain-forecast-updates-december-25-2024-101735090210727.html\", \"content\": \"Kolkata Weather and AQI Today: Warm start at 18.97 °C, check weather forecast for December 25, 2024 | Kolkata - Hindustan Times HT E-paper Access digital news experience Delhi News Delhi News Kolkata Weather and AQI Today: Warm start at 18.97 °C, check weather forecast for December 25, 2024 News / Cities / Kolkata / Kolkata Weather and AQI Today: Warm start at 18.97 °C, check weather forecast for December 25, 2024 World News India News Delhi News Kolkata News TRENDING NEWS US News Live US News Live India News Jammu and Kashmir Weather and AQI Today: Cool start at -27.78 °C, check weather forecast for December 25, 2024 India News US News india news News Photos More from HT\"}]', name='tavily_search_results_json', id='00eed108-6a5a-4046-8a61-01e9cf24ac0c', tool_call_id='call_KikzMfHJLNZuIKAU77Mb2BHx', artifact={'query': 'current weather in Kolkata', 'follow_up_questions': None, 'answer': None, 'images': [], 'results': [{'title': 'Weather in Kolkata', 'url': 'https://www.weatherapi.com/', 'content': \"{'location': {'name': 'Kolkata', 'region': 'West Bengal', 'country': 'India', 'lat': 22.5697, 'lon': 88.3697, 'tz_id': 'Asia/Kolkata', 'localtime_epoch': 1735114116, 'localtime': '2024-12-25 13:38'}, 'current': {'last_updated_epoch': 1735113600, 'last_updated': '2024-12-25 13:30', 'temp_c': 26.6, 'temp_f': 79.9, 'is_day': 1, 'condition': {'text': 'Sunny', 'icon': '//cdn.weatherapi.com/weather/64x64/day/113.png', 'code': 1000}, 'wind_mph': 5.8, 'wind_kph': 9.4, 'wind_degree': 357, 'wind_dir': 'N', 'pressure_mb': 1015.0, 'pressure_in': 29.97, 'precip_mm': 0.0, 'precip_in': 0.0, 'humidity': 26, 'cloud': 16, 'feelslike_c': 25.5, 'feelslike_f': 77.8, 'windchill_c': 26.6, 'windchill_f': 79.9, 'heatindex_c': 25.5, 'heatindex_f': 77.8, 'dewpoint_c': 5.6, 'dewpoint_f': 42.0, 'vis_km': 10.0, 'vis_miles': 6.0, 'uv': 1.7, 'gust_mph': 7.3, 'gust_kph': 11.7}}\", 'score': 0.9728701, 'raw_content': None}, {'title': 'Kolkata Weather and AQI Today: Warm start at 18.97 °C, check weather ...', 'url': 'https://www.hindustantimes.com/cities/kolkata-news/kolkata-weather-today-aqi-and-rain-forecast-updates-december-25-2024-101735090210727.html', 'content': 'Kolkata Weather and AQI Today: Warm start at 18.97 °C, check weather forecast for December 25, 2024 | Kolkata - Hindustan Times HT E-paper Access digital news experience Delhi News Delhi News Kolkata Weather and AQI Today: Warm start at 18.97 °C, check weather forecast for December 25, 2024 News / Cities / Kolkata / Kolkata Weather and AQI Today: Warm start at 18.97 °C, check weather forecast for December 25, 2024 World News India News Delhi News Kolkata News TRENDING NEWS US News Live US News Live India News Jammu and Kashmir Weather and AQI Today: Cool start at -27.78 °C, check weather forecast for December 25, 2024 India News US News india news News Photos More from HT', 'score': 0.9325087, 'raw_content': None}], 'response_time': 4.19})]}})\n",
            "----\n",
            "(('web_researcher:d9079f74-0db8-074f-e992-7b3e56008b0b',), {'agent': {'messages': [AIMessage(content='The current weather in Kolkata is sunny with a temperature of 26.6°C (79.9°F). The humidity is at 26%, and there is a light wind coming from the north at 9.4 kph (5.8 mph). The atmospheric pressure is 1015.0 mb, and there is no precipitation. Visibility is good at 10 km, and the UV index is 1.7.', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 89, 'prompt_tokens': 746, 'total_tokens': 835, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-2024-08-06', 'system_fingerprint': 'fp_5f20662549', 'finish_reason': 'stop', 'logprobs': None}, id='run-6b3e211e-c6b5-4d15-a6bc-b7fc1a2f580b-0', usage_metadata={'input_tokens': 746, 'output_tokens': 89, 'total_tokens': 835, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})]}})\n",
            "----\n",
            "((), {'web_researcher': {'messages': [HumanMessage(content='The current weather in Kolkata is sunny with a temperature of 26.6°C (79.9°F). The humidity is at 26%, and there is a light wind coming from the north at 9.4 kph (5.8 mph). The atmospheric pressure is 1015.0 mb, and there is no precipitation. Visibility is good at 10 km, and the UV index is 1.7.', additional_kwargs={}, response_metadata={}, name='web_researcher')]}})\n",
            "----\n",
            "Next Worker: FINISH\n",
            "((), {'supervisor': None})\n",
            "----\n"
          ]
        }
      ],
      "source": [
        "for s in graph.stream(\n",
        "    {\"messages\": [(\"user\", \"what is the current weather in Kolkata\")]}, subgraphs=True\n",
        "):\n",
        "    print(s)\n",
        "    print(\"----\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "fp8XsZc6u1S1",
        "outputId": "e7650445-c18d-48b3-d8fc-a768957fc109"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Next Worker: rag\n",
            "((), {'supervisor': None})\n",
            "----\n",
            "INSIDE RETRIEVER NODE\n",
            "(('rag:7c5458df-0abd-944a-27f7-b0bad49ccf3d',), {'agent': {'messages': [AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_fK9lMHGrtubenQ697xpd2ZZ2', 'function': {'arguments': '{\"question\":\"Who is the founder of FutureSmart AI?\"}', 'name': 'retriever_tool'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 25, 'prompt_tokens': 70, 'total_tokens': 95, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-2024-08-06', 'system_fingerprint': 'fp_d28bcae782', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-e538251e-24e9-45ac-a5b7-b4ce111615ad-0', tool_calls=[{'name': 'retriever_tool', 'args': {'question': 'Who is the founder of FutureSmart AI?'}, 'id': 'call_fK9lMHGrtubenQ697xpd2ZZ2', 'type': 'tool_call'}], usage_metadata={'input_tokens': 70, 'output_tokens': 25, 'total_tokens': 95, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})]}})\n",
            "----\n",
            "(('rag:7c5458df-0abd-944a-27f7-b0bad49ccf3d',), {'tools': {'messages': [ToolMessage(content='FutureSmart AI provides customized speech to text services, employing cutting-\\nedge speech recognition technologies to cater to specific client needs. Ideal for \\ncreating efficient documentation and enabling voice-driven commands, this \\nsolution boosts productivity and accessibility.\\n\\nFutureSmart AI provides custom Natural Language Processing (NLP) \\nsolutions for companies looking to get ahead of the future. Our \\ndedicated team of Data Scientists and ML Engineers provides an end-\\nto-end solution from data labeling to modeling and deploying an ML \\nmodel tailored to your specific use case. \\nFounder: Pradip Nichite \\n \\nServices: \\nText Classification \\nAt FutureSmart AI, we develop custom text classification solutions using \\nadvanced NLP techniques tailored to your specific business requirements. \\nLeveraging Python, Pytorch, and Hugging Face transformers, we enable precise \\ndata categorization across applications such as intent detection, document \\ncategorization, and sentiment analysis, enhancing your decision-making \\nprocesses and operational efficiency. \\n \\nChatbots \\nWe specialize in creating custom chatbots that integrate seamlessly with your \\nbusiness environment. Using semantic search and large language models, our', name='retriever_tool', id='fe12dcaa-a380-437f-8c24-5a7cbf6ab031', tool_call_id='call_fK9lMHGrtubenQ697xpd2ZZ2')]}})\n",
            "----\n",
            "(('rag:7c5458df-0abd-944a-27f7-b0bad49ccf3d',), {'agent': {'messages': [AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_nvmRMsfWcg0YVC9xeTqxZO7z', 'function': {'arguments': '{\"question\": \"Who is Pradip Nichite?\"}', 'name': 'retriever_tool'}, 'type': 'function'}, {'id': 'call_IGzCvWkpkzlpwlhFR1MR80U4', 'function': {'arguments': '{\"question\": \"What is the professional background of Pradip Nichite?\"}', 'name': 'retriever_tool'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 67, 'prompt_tokens': 322, 'total_tokens': 389, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-2024-08-06', 'system_fingerprint': 'fp_d28bcae782', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-a4c6ec42-3aec-449c-ab39-ac029109eaad-0', tool_calls=[{'name': 'retriever_tool', 'args': {'question': 'Who is Pradip Nichite?'}, 'id': 'call_nvmRMsfWcg0YVC9xeTqxZO7z', 'type': 'tool_call'}, {'name': 'retriever_tool', 'args': {'question': 'What is the professional background of Pradip Nichite?'}, 'id': 'call_IGzCvWkpkzlpwlhFR1MR80U4', 'type': 'tool_call'}], usage_metadata={'input_tokens': 322, 'output_tokens': 67, 'total_tokens': 389, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})]}})\n",
            "----\n",
            "INSIDE RETRIEVER NODE\n",
            "INSIDE RETRIEVER NODE\n",
            "(('rag:7c5458df-0abd-944a-27f7-b0bad49ccf3d',), {'tools': {'messages': [ToolMessage(content='FutureSmart AI provides customized speech to text services, employing cutting-\\nedge speech recognition technologies to cater to specific client needs. Ideal for \\ncreating efficient documentation and enabling voice-driven commands, this \\nsolution boosts productivity and accessibility.\\n\\nFutureSmart AI provides custom Natural Language Processing (NLP) \\nsolutions for companies looking to get ahead of the future. Our \\ndedicated team of Data Scientists and ML Engineers provides an end-\\nto-end solution from data labeling to modeling and deploying an ML \\nmodel tailored to your specific use case. \\nFounder: Pradip Nichite \\n \\nServices: \\nText Classification \\nAt FutureSmart AI, we develop custom text classification solutions using \\nadvanced NLP techniques tailored to your specific business requirements. \\nLeveraging Python, Pytorch, and Hugging Face transformers, we enable precise \\ndata categorization across applications such as intent detection, document \\ncategorization, and sentiment analysis, enhancing your decision-making \\nprocesses and operational efficiency. \\n \\nChatbots \\nWe specialize in creating custom chatbots that integrate seamlessly with your \\nbusiness environment. Using semantic search and large language models, our', name='retriever_tool', id='57d1c6f3-b789-4ae1-84c4-c156ca34d3c1', tool_call_id='call_nvmRMsfWcg0YVC9xeTqxZO7z'), ToolMessage(content='FutureSmart AI provides customized speech to text services, employing cutting-\\nedge speech recognition technologies to cater to specific client needs. Ideal for \\ncreating efficient documentation and enabling voice-driven commands, this \\nsolution boosts productivity and accessibility.\\n\\nFutureSmart AI provides custom Natural Language Processing (NLP) \\nsolutions for companies looking to get ahead of the future. Our \\ndedicated team of Data Scientists and ML Engineers provides an end-\\nto-end solution from data labeling to modeling and deploying an ML \\nmodel tailored to your specific use case. \\nFounder: Pradip Nichite \\n \\nServices: \\nText Classification \\nAt FutureSmart AI, we develop custom text classification solutions using \\nadvanced NLP techniques tailored to your specific business requirements. \\nLeveraging Python, Pytorch, and Hugging Face transformers, we enable precise \\ndata categorization across applications such as intent detection, document \\ncategorization, and sentiment analysis, enhancing your decision-making \\nprocesses and operational efficiency. \\n \\nChatbots \\nWe specialize in creating custom chatbots that integrate seamlessly with your \\nbusiness environment. Using semantic search and large language models, our', name='retriever_tool', id='a498df53-f77a-4bfb-abbf-9153790295e5', tool_call_id='call_IGzCvWkpkzlpwlhFR1MR80U4')]}})\n",
            "----\n",
            "(('rag:7c5458df-0abd-944a-27f7-b0bad49ccf3d',), {'agent': {'messages': [AIMessage(content=\"The founder of FutureSmart AI is Pradip Nichite. Unfortunately, the current retrieval did not provide additional information specifically about Pradip Nichite's professional background or further personal details. For more comprehensive insights, you might consider conducting a more extensive web search or accessing professional networking sites like LinkedIn.\", additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 63, 'prompt_tokens': 888, 'total_tokens': 951, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-2024-08-06', 'system_fingerprint': 'fp_d28bcae782', 'finish_reason': 'stop', 'logprobs': None}, id='run-bc47c29c-0693-41c5-88be-b322e1fbb096-0', usage_metadata={'input_tokens': 888, 'output_tokens': 63, 'total_tokens': 951, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})]}})\n",
            "----\n",
            "((), {'rag': {'messages': [HumanMessage(content=\"The founder of FutureSmart AI is Pradip Nichite. Unfortunately, the current retrieval did not provide additional information specifically about Pradip Nichite's professional background or further personal details. For more comprehensive insights, you might consider conducting a more extensive web search or accessing professional networking sites like LinkedIn.\", additional_kwargs={}, response_metadata={}, name='rag')]}})\n",
            "----\n",
            "Next Worker: web_researcher\n",
            "((), {'supervisor': None})\n",
            "----\n",
            "(('web_researcher:509bb5e2-bf9e-2c1d-5c65-978a73d5e94c',), {'agent': {'messages': [AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_L5d4KhCSPsT5HmHTpHmnyryx', 'function': {'arguments': '{\"query\":\"Pradip Nichite\"}', 'name': 'tavily_search_results_json'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 23, 'prompt_tokens': 161, 'total_tokens': 184, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-2024-08-06', 'system_fingerprint': 'fp_e161c81bbd', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-35518542-a3b6-424b-b4c7-f8fbb56cffd6-0', tool_calls=[{'name': 'tavily_search_results_json', 'args': {'query': 'Pradip Nichite'}, 'id': 'call_L5d4KhCSPsT5HmHTpHmnyryx', 'type': 'tool_call'}], usage_metadata={'input_tokens': 161, 'output_tokens': 23, 'total_tokens': 184, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})]}})\n",
            "----\n",
            "(('web_researcher:509bb5e2-bf9e-2c1d-5c65-978a73d5e94c',), {'tools': {'messages': [ToolMessage(content='[{\"url\": \"https://www.youtube.com/c/PradipNichiteAI\", \"content\": \"Hello, my name is Pradip Nichite. I am a 🚀 Top Rated Plus Data Science Freelancer with 8+ years of experience, specializing in NLP and Back-End Development. Founder of FutureSmart AI, helping\"}, {\"url\": \"https://www.youtube.com/channel/UCwpCmuWq_NPVLNyr8z1IGGQ\", \"content\": \"I\\'m Pradip Nichite, a Top Rated Plus freelance Data Scientist on Upwork 💼, a successful digital nomad 🌍, and an entrepreneur. My journey in freelancing has led me to earn over $200K 💰\"}]', name='tavily_search_results_json', id='5daeafe8-e673-425e-9d7e-35f49ccae710', tool_call_id='call_L5d4KhCSPsT5HmHTpHmnyryx', artifact={'query': 'Pradip Nichite', 'follow_up_questions': None, 'answer': None, 'images': [], 'results': [{'title': 'Pradip Nichite - YouTube', 'url': 'https://www.youtube.com/c/PradipNichiteAI', 'content': 'Hello, my name is Pradip Nichite. I am a 🚀 Top Rated Plus Data Science Freelancer with 8+ years of experience, specializing in NLP and Back-End Development. Founder of FutureSmart AI, helping', 'score': 0.8080827, 'raw_content': None}, {'title': 'Pradip Nichite - YouTube', 'url': 'https://www.youtube.com/channel/UCwpCmuWq_NPVLNyr8z1IGGQ', 'content': \"I'm Pradip Nichite, a Top Rated Plus freelance Data Scientist on Upwork 💼, a successful digital nomad 🌍, and an entrepreneur. My journey in freelancing has led me to earn over $200K 💰\", 'score': 0.7636429, 'raw_content': None}], 'response_time': 1.73})]}})\n",
            "----\n",
            "(('web_researcher:509bb5e2-bf9e-2c1d-5c65-978a73d5e94c',), {'agent': {'messages': [AIMessage(content='Pradip Nichite is a Top Rated Plus Data Science Freelancer with over 8 years of experience, specializing in Natural Language Processing (NLP) and Back-End Development. He is the founder of FutureSmart AI. Additionally, Pradip is recognized as a successful digital nomad and entrepreneur, having earned over $200K through freelancing, primarily on platforms like Upwork. For more insights, you can explore his [YouTube channel](https://www.youtube.com/c/PradipNichiteAI), where he shares more about his experiences and expertise.', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 116, 'prompt_tokens': 346, 'total_tokens': 462, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-2024-08-06', 'system_fingerprint': 'fp_e161c81bbd', 'finish_reason': 'stop', 'logprobs': None}, id='run-32d923b8-a3be-420a-a06f-35a7e27c68bb-0', usage_metadata={'input_tokens': 346, 'output_tokens': 116, 'total_tokens': 462, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})]}})\n",
            "----\n",
            "((), {'web_researcher': {'messages': [HumanMessage(content='Pradip Nichite is a Top Rated Plus Data Science Freelancer with over 8 years of experience, specializing in Natural Language Processing (NLP) and Back-End Development. He is the founder of FutureSmart AI. Additionally, Pradip is recognized as a successful digital nomad and entrepreneur, having earned over $200K through freelancing, primarily on platforms like Upwork. For more insights, you can explore his [YouTube channel](https://www.youtube.com/c/PradipNichiteAI), where he shares more about his experiences and expertise.', additional_kwargs={}, response_metadata={}, name='web_researcher')]}})\n",
            "----\n",
            "Next Worker: FINISH\n",
            "((), {'supervisor': None})\n",
            "----\n"
          ]
        }
      ],
      "source": [
        "input_question = \"Find the founder of FutureSmart AI and then do a web research on him\"\n",
        "\n",
        "for s in graph.stream(\n",
        "    {\"messages\": [(\"user\", input_question)]}, subgraphs=True\n",
        "):\n",
        "    print(s)\n",
        "    print(\"----\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "7qzs3AQtxFtR"
      },
      "outputs": [],
      "source": []
    }
  ],
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "name": "python"
    },
    "widgets": {
      "application/vnd.jupyter.widget-state+json": {
        "02f980ef61a4408795695d83d2deac09": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_725b4477fb9948d5b06f7c48d4aedf3c",
              "IPY_MODEL_a7b2eef74ca14598a3266a92e23899a2",
              "IPY_MODEL_80f5f668c2c440c4a430910d86b1f651"
            ],
            "layout": "IPY_MODEL_62cb067923be46d78718afcb661337d4"
          }
        },
        "0986cba6f29746ffbc37bd6e10c13849": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "09cf10392efa488286ad0fd3d8d3d823": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "09dbeb3415844078acec44d4535042d5": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "0bdabcd7c558419d9f09d0d2948255ee": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "0db4f33ddd8c45f3a16be06954e91a4a": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "0dc5d74bbeb7416aafb83493d398b284": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_4a085f8aa8f3411c84367f7b0d36b393",
            "placeholder": "​",
            "style": "IPY_MODEL_14e1c3fcca114894abd4405cb2b185cd",
            "value": "tokenizer_config.json: 100%"
          }
        },
        "0e5d97707618421eb98fcea463dc01c2": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "1312e162a22a4b5b8deed6971d2ae5a2": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_8043223d140543f0a91dbc91aca18681",
            "placeholder": "​",
            "style": "IPY_MODEL_435fd1ca3d884a88b86bd887903e7d4c",
            "value": "tokenizer.json: 100%"
          }
        },
        "14e1c3fcca114894abd4405cb2b185cd": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "154ab02a034b4706b50cb22b84f0a50f": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_8da9ae97ce3247039216c2eba7e5f0aa",
            "placeholder": "​",
            "style": "IPY_MODEL_50caeae0353840858bbe0080de2f5e68",
            "value": "modules.json: 100%"
          }
        },
        "15f23ca67b584e1e83f2f0e8ce7e26a1": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_f1dbba66af3e467093cd92bea060872d",
              "IPY_MODEL_be78ec3ab9ed4fbf87ff3a4c00b049e4",
              "IPY_MODEL_64223314e16347b1a253e4ce8db84634"
            ],
            "layout": "IPY_MODEL_0986cba6f29746ffbc37bd6e10c13849"
          }
        },
        "192e8df414de4331a4b6d1dff8adeaa1": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "19c11f499f404a33bfc881c738e9a287": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_4ff850f4c42f40338adcffa980bbcf26",
            "max": 53,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_b0d91efcebbd4a0788da148a1a3003bf",
            "value": 53
          }
        },
        "1f357a6fbd0a403d9a33c9a19dd6a7cb": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_6bc4cc186ac44b50bd99ffe9fbf5a1e7",
            "placeholder": "​",
            "style": "IPY_MODEL_374ea758a45641588eb6b7af2e478ed4",
            "value": "sentence_bert_config.json: 100%"
          }
        },
        "1f63ce1eb8e04e188e5e9e9a5c23a77c": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "20a8fe88e5a047e18145c6f0603e8a2f": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "337a8cc040fa4e15aa159cac09769a01": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "36ec83b1dd524861908d9e01e73b2f6f": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "374ea758a45641588eb6b7af2e478ed4": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "37b94b54f4d349cdbeb71cc47f80614e": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "3a16705ce7be4cafbff414b16c4c0136": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_ace141ee89a04424b849d913a0877e19",
            "max": 116,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_7aa831ff911342878c76f48ce36346bd",
            "value": 116
          }
        },
        "3b0f8e4e3b1241699006b0f0006d2f73": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_0bdabcd7c558419d9f09d0d2948255ee",
            "max": 350,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_d4a2f0347910423c80f93fe1fd62dc9e",
            "value": 350
          }
        },
        "3b272f3544c44f6fa99b1c1fe5073b16": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "3c9e743f83ea4724b582948e79708e64": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "41c0927b4c6842328e00a809e57c2c26": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "435fd1ca3d884a88b86bd887903e7d4c": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "43d674fbefc945e3aef5c02e3130daf4": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "45b17cf1276f4ccb921ff47585c7aeca": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "46c3a8f4a3b3432c8122051473fae82a": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_5fd6713203394d09a1c36aa60f1ad39b",
            "placeholder": "​",
            "style": "IPY_MODEL_d8f3ed5c27eb41ba9e547fe6299b957f",
            "value": "config_sentence_transformers.json: 100%"
          }
        },
        "4735e8c982d24713bde1dd6467d0465e": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "49753983c8f74fcf8c72fab5865b56c5": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_09dbeb3415844078acec44d4535042d5",
            "max": 466247,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_337a8cc040fa4e15aa159cac09769a01",
            "value": 466247
          }
        },
        "4a085f8aa8f3411c84367f7b0d36b393": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "4aa77651f63d421191259c76ff8f5657": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "4f11da84269345459635755d51345cb1": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "4ff850f4c42f40338adcffa980bbcf26": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "50caeae0353840858bbe0080de2f5e68": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "54ee88e8afd34db98715dedb0cfa41e3": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_d33843c3766043c88c0bd8da57ad9840",
            "max": 612,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_e7349d885f354d6ab1bd76e8329f3191",
            "value": 612
          }
        },
        "576e2e11a405476f86f785cc5b150b73": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "58a3e33421344ad5884ad05db220cc85": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_4f11da84269345459635755d51345cb1",
            "placeholder": "​",
            "style": "IPY_MODEL_c6c5671559fb47668ac4b8f6e6ed9e72",
            "value": " 190/190 [00:00&lt;00:00, 6.61kB/s]"
          }
        },
        "5b87f244a5834c10a336bde29533cb20": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_66ce8ac0ff814c829f273f8c6662f467",
            "max": 112,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_dfbe2529ed49416b96f624e14a721c05",
            "value": 112
          }
        },
        "5d3920080d9145fd9686148c377c943f": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "5efc7a177a8448d2976231b79a4db8f6": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_3c9e743f83ea4724b582948e79708e64",
            "max": 349,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_41c0927b4c6842328e00a809e57c2c26",
            "value": 349
          }
        },
        "5fd6713203394d09a1c36aa60f1ad39b": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "62cb067923be46d78718afcb661337d4": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "64223314e16347b1a253e4ce8db84634": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_9a2feed0ad1b47199fba1247b720f1fb",
            "placeholder": "​",
            "style": "IPY_MODEL_3b272f3544c44f6fa99b1c1fe5073b16",
            "value": " 232k/232k [00:00&lt;00:00, 2.70MB/s]"
          }
        },
        "6434258a2d0c4763a2ffeaa6a9d1be38": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_ac0f5f9c8985412aaac268c127fb9e07",
              "IPY_MODEL_fcce9846babc4a1b91fb00bfff31fcfa",
              "IPY_MODEL_e1385daf2da9437ba70df001e4b5abe7"
            ],
            "layout": "IPY_MODEL_becf2b4779f146839af4419b80346f5e"
          }
        },
        "64ce7b25e85f452eb780048875d12488": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_8786148c167743e98372b4f0a476f221",
            "placeholder": "​",
            "style": "IPY_MODEL_9a9271af3e5d4e7083708ccd48bfec5a",
            "value": "1_Pooling/config.json: 100%"
          }
        },
        "66ce8ac0ff814c829f273f8c6662f467": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "6b91ea1978d8452cb32f47f3d8d49588": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "6bc4cc186ac44b50bd99ffe9fbf5a1e7": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "6dee812400714f7986c36dcc6266455e": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "725b4477fb9948d5b06f7c48d4aedf3c": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_f554ff9eec96473385a0089b1932559c",
            "placeholder": "​",
            "style": "IPY_MODEL_5d3920080d9145fd9686148c377c943f",
            "value": "README.md: 100%"
          }
        },
        "7aa831ff911342878c76f48ce36346bd": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "7c2874ab7535499fbdd3f756d16ac927": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_36ec83b1dd524861908d9e01e73b2f6f",
            "placeholder": "​",
            "style": "IPY_MODEL_cbb9c058e6d540c7a893e0c740fd134d",
            "value": " 112/112 [00:00&lt;00:00, 7.37kB/s]"
          }
        },
        "7e7e403387f847039c7d95464e02073a": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "8043223d140543f0a91dbc91aca18681": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "80f5f668c2c440c4a430910d86b1f651": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_37b94b54f4d349cdbeb71cc47f80614e",
            "placeholder": "​",
            "style": "IPY_MODEL_9a2ec5debb20450f9bd573dd29e14930",
            "value": " 10.7k/10.7k [00:00&lt;00:00, 561kB/s]"
          }
        },
        "856102d288ba48f8a417b7501bdaf6ac": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "85dbde76519747318ba5a9d3cb64b198": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "85fbf3b2ec8644e7a1a84eb546e55ad5": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "8786148c167743e98372b4f0a476f221": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "8c17fb3e1ac0482f8f429dbc67a0dfb7": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "8da9ae97ce3247039216c2eba7e5f0aa": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "8e33a0b16bf54162ad3389c4fd712025": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_0dc5d74bbeb7416aafb83493d398b284",
              "IPY_MODEL_3b0f8e4e3b1241699006b0f0006d2f73",
              "IPY_MODEL_bf18fef89ce94a7cb5f7e6c2531f6b7b"
            ],
            "layout": "IPY_MODEL_b6ab73dea4d14190a0e1a0df724eb272"
          }
        },
        "8fa1dbbe67fd448eb25d09ee2cb0e3a1": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "9474bc45a8d3491b86f1c9349701000e": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_bb53ecb8b7e54f32805c8e639e9b70fd",
              "IPY_MODEL_5b87f244a5834c10a336bde29533cb20",
              "IPY_MODEL_7c2874ab7535499fbdd3f756d16ac927"
            ],
            "layout": "IPY_MODEL_192e8df414de4331a4b6d1dff8adeaa1"
          }
        },
        "96cb91f6d69a4551b3bbd0e2693fdda7": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "9933fbe31dce452aa125eadb0e95feb4": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_dd5b799ea03746f6af53dff388313411",
            "placeholder": "​",
            "style": "IPY_MODEL_576e2e11a405476f86f785cc5b150b73",
            "value": " 612/612 [00:00&lt;00:00, 41.9kB/s]"
          }
        },
        "9a2ec5debb20450f9bd573dd29e14930": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "9a2feed0ad1b47199fba1247b720f1fb": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "9a9271af3e5d4e7083708ccd48bfec5a": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "9bbf5ee36dd64177bcd8e54916b7a824": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "9e0ce48bdf53473bb87e2c35c6492872": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "9f62e16334ba40689356e8daa5dd852c": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_e1d40c569e0048b79644763d32098348",
            "placeholder": "​",
            "style": "IPY_MODEL_6b91ea1978d8452cb32f47f3d8d49588",
            "value": " 53.0/53.0 [00:00&lt;00:00, 1.86kB/s]"
          }
        },
        "a11e048102904d97988f5ed135150b65": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_64ce7b25e85f452eb780048875d12488",
              "IPY_MODEL_b75f3cc4d6e44b69a3f74159a7fa1c67",
              "IPY_MODEL_58a3e33421344ad5884ad05db220cc85"
            ],
            "layout": "IPY_MODEL_a8d467eef48a4f2193c4562955082dc6"
          }
        },
        "a1faa9b4be024d67b465052b871c4b84": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_154ab02a034b4706b50cb22b84f0a50f",
              "IPY_MODEL_5efc7a177a8448d2976231b79a4db8f6",
              "IPY_MODEL_afe8d271571644e18a79d4376479eef1"
            ],
            "layout": "IPY_MODEL_b7097ac678654d67b1bc2b055ead661b"
          }
        },
        "a673e70c7f7941bca0dc0527e2e478b9": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "a7b2eef74ca14598a3266a92e23899a2": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_fa1117c8f73a451c8fd521ae4608b4e7",
            "max": 10659,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_e6f9f28d3bc8457682a4d69b1bbd5972",
            "value": 10659
          }
        },
        "a8d467eef48a4f2193c4562955082dc6": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "ac0f5f9c8985412aaac268c127fb9e07": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_4735e8c982d24713bde1dd6467d0465e",
            "placeholder": "​",
            "style": "IPY_MODEL_20a8fe88e5a047e18145c6f0603e8a2f",
            "value": "model.safetensors: 100%"
          }
        },
        "ace141ee89a04424b849d913a0877e19": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "afe8d271571644e18a79d4376479eef1": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_a673e70c7f7941bca0dc0527e2e478b9",
            "placeholder": "​",
            "style": "IPY_MODEL_1f63ce1eb8e04e188e5e9e9a5c23a77c",
            "value": " 349/349 [00:00&lt;00:00, 23.2kB/s]"
          }
        },
        "b0d91efcebbd4a0788da148a1a3003bf": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "b27bb4ac6dc145c8b93b7ff939014030": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_1312e162a22a4b5b8deed6971d2ae5a2",
              "IPY_MODEL_49753983c8f74fcf8c72fab5865b56c5",
              "IPY_MODEL_ba8100d415764cf3b05c5e285f230acb"
            ],
            "layout": "IPY_MODEL_96cb91f6d69a4551b3bbd0e2693fdda7"
          }
        },
        "b6ab73dea4d14190a0e1a0df724eb272": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "b7097ac678654d67b1bc2b055ead661b": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "b75f3cc4d6e44b69a3f74159a7fa1c67": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_f8ba25a87b0445f2b905dac498b2c3bb",
            "max": 190,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_9bbf5ee36dd64177bcd8e54916b7a824",
            "value": 190
          }
        },
        "ba8100d415764cf3b05c5e285f230acb": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_0e5d97707618421eb98fcea463dc01c2",
            "placeholder": "​",
            "style": "IPY_MODEL_bd19af49cf16423286394ddbade1a0e8",
            "value": " 466k/466k [00:00&lt;00:00, 10.3MB/s]"
          }
        },
        "bb53ecb8b7e54f32805c8e639e9b70fd": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_4aa77651f63d421191259c76ff8f5657",
            "placeholder": "​",
            "style": "IPY_MODEL_45b17cf1276f4ccb921ff47585c7aeca",
            "value": "special_tokens_map.json: 100%"
          }
        },
        "bd19af49cf16423286394ddbade1a0e8": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "bda459bdf3a440ceb19952e6e8f2aae8": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "be78ec3ab9ed4fbf87ff3a4c00b049e4": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_7e7e403387f847039c7d95464e02073a",
            "max": 231508,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_e29394be61ef44fd95f087f5aa4e8d7e",
            "value": 231508
          }
        },
        "becf2b4779f146839af4419b80346f5e": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "bf18fef89ce94a7cb5f7e6c2531f6b7b": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_85dbde76519747318ba5a9d3cb64b198",
            "placeholder": "​",
            "style": "IPY_MODEL_8c17fb3e1ac0482f8f429dbc67a0dfb7",
            "value": " 350/350 [00:00&lt;00:00, 14.8kB/s]"
          }
        },
        "c1a523087ccc48b0b4641b77a4f5d2f4": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "c6c5671559fb47668ac4b8f6e6ed9e72": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "c78f9b0ccd9c4b02b60b4c31fdaf7b4f": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_46c3a8f4a3b3432c8122051473fae82a",
              "IPY_MODEL_3a16705ce7be4cafbff414b16c4c0136",
              "IPY_MODEL_f479706f26df4472b9feacb49ff4cc68"
            ],
            "layout": "IPY_MODEL_bda459bdf3a440ceb19952e6e8f2aae8"
          }
        },
        "c83f93a74acf40dca2fdaa6e5bee0654": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "cbb9c058e6d540c7a893e0c740fd134d": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "d0b5e7a6270e415b9460786fcd037c39": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "d33843c3766043c88c0bd8da57ad9840": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "d4a2f0347910423c80f93fe1fd62dc9e": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "d638c91b9a3f46c1b7f6e0a277ce269b": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_e02f2f3b089648168a31aceb1750d7e5",
              "IPY_MODEL_54ee88e8afd34db98715dedb0cfa41e3",
              "IPY_MODEL_9933fbe31dce452aa125eadb0e95feb4"
            ],
            "layout": "IPY_MODEL_85fbf3b2ec8644e7a1a84eb546e55ad5"
          }
        },
        "d8f3ed5c27eb41ba9e547fe6299b957f": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "dd5b799ea03746f6af53dff388313411": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "dfbe2529ed49416b96f624e14a721c05": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "e02f2f3b089648168a31aceb1750d7e5": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_8fa1dbbe67fd448eb25d09ee2cb0e3a1",
            "placeholder": "​",
            "style": "IPY_MODEL_09cf10392efa488286ad0fd3d8d3d823",
            "value": "config.json: 100%"
          }
        },
        "e1385daf2da9437ba70df001e4b5abe7": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_c1a523087ccc48b0b4641b77a4f5d2f4",
            "placeholder": "​",
            "style": "IPY_MODEL_43d674fbefc945e3aef5c02e3130daf4",
            "value": " 90.9M/90.9M [00:00&lt;00:00, 146MB/s]"
          }
        },
        "e1d40c569e0048b79644763d32098348": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "e29394be61ef44fd95f087f5aa4e8d7e": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "e6f9f28d3bc8457682a4d69b1bbd5972": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "e7349d885f354d6ab1bd76e8329f3191": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "ea312bd61b9444aa9ba22ac2ba40dbd7": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_1f357a6fbd0a403d9a33c9a19dd6a7cb",
              "IPY_MODEL_19c11f499f404a33bfc881c738e9a287",
              "IPY_MODEL_9f62e16334ba40689356e8daa5dd852c"
            ],
            "layout": "IPY_MODEL_c83f93a74acf40dca2fdaa6e5bee0654"
          }
        },
        "f1dbba66af3e467093cd92bea060872d": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_0db4f33ddd8c45f3a16be06954e91a4a",
            "placeholder": "​",
            "style": "IPY_MODEL_6dee812400714f7986c36dcc6266455e",
            "value": "vocab.txt: 100%"
          }
        },
        "f479706f26df4472b9feacb49ff4cc68": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_f86633548fbe4e1a8aa81cda8b0cb7d5",
            "placeholder": "​",
            "style": "IPY_MODEL_856102d288ba48f8a417b7501bdaf6ac",
            "value": " 116/116 [00:00&lt;00:00, 8.07kB/s]"
          }
        },
        "f554ff9eec96473385a0089b1932559c": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "f86633548fbe4e1a8aa81cda8b0cb7d5": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "f8ba25a87b0445f2b905dac498b2c3bb": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "fa1117c8f73a451c8fd521ae4608b4e7": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "fcce9846babc4a1b91fb00bfff31fcfa": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_d0b5e7a6270e415b9460786fcd037c39",
            "max": 90868376,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_9e0ce48bdf53473bb87e2c35c6492872",
            "value": 90868376
          }
        }
      }
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
